type IsAny<T> = number extends string & T ? true : false;
type Result69 = IsAny<any>;

type IsEq<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2
  ? true
  : false;

type NotEq<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2
  ? false
  : true;

type Result70 = IsEq<1, any>;

type IsNever<T> = [T] extends [never] ? true : false;
type Result71 = IsNever<1>;

type TestAny<T> = T extends number ? 1 : 2;
type Result72 = TestAny<any>;

type IsTuple<T> = T extends readonly [...params: infer Else]
  ? NotEq<Else['length'], number>
  : false;

type Result73 = IsTuple<number[]>;

type UnionToIntersection<U> = (U extends U ? (x: U) => unknown : never) extends (
  x: infer R,
) => unknown
  ? R
  : never;
type Result74 = UnionToIntersection<{ a: 1 } | { b: 2 }>;

type GetOption<T extends Record<string, any>> = {
  [K in keyof T as {} extends Pick<T, K> ? K : never]: T[K];
};

type Result75 = GetOption<{
  name: string;
  age?: number;
}>;

type GetRequired<T extends Record<string, any>> = {
  [K in keyof T as {} extends Pick<T, K> ? never : K]: T[K];
};

type Result76 = GetRequired<{
  name: string;
  age?: number;
}>;

type RemoveIndexSignature<T extends Record<string, any>> = {
  [K in keyof T as K extends `${infer S}` ? S : never]: T[K];
};

type Result77 = RemoveIndexSignature<{
  [key: string]: any;
  sleep(): void;
}>;

type PublicProps<T extends Record<string, any>> = {
  [K in keyof T]: T[K];
};

type Result78 = PublicProps<Test>;

type ReverseConstTuple<T> = T extends readonly [infer Fst, ...infer Rest]
  ? [...ReverseConstTuple<Rest>, Fst]
  : T;

const arr = [1, 2, 3, 4] as const;
type ArrType = typeof arr;
type Result79 = ReverseConstTuple<ArrType>;
